/**
 * 策略模式：一个类的行为或算法可以在运行时动态更改。将每个算法封装起来，使它们可以互换使用，无需修改客户端代码。
 * 
 * 示例需求：
 * 创建一个定义活动的 Strategy 接口和实现了 Strategy 接口的实体策略类。Context 是一个使用了某种策略的类。
 * 演示类SimpleMain使用 Context 和策略对象来演示 Context 在它所配置或使用的策略改变时的行为变化。
 * 
 * 角色：
 * 抽象策略：Strategy
 * 具体策略：OperationAdd、OperationSubstract、OperationMultiply
 * 上下文：Context
 */
public class SimpleMain {
    public static void main(String[] args) {
        Context context = new Context();
        context.setStrategy(new OperationAdd());
        System.out.println("1+2=" + context.executeStrate(1, 2));
        // 这里通过切换策略，客户端无需修改任何代码，其执行的算法已经变化了。
        context.setStrategy(new OperationSubstract());
        System.out.println("1-2=" + context.executeStrate(1, 2));
        context.setStrategy(new OperationMultiply());
        System.out.println("1*2=" + context.executeStrate(1, 2));
    }
}
